package com.example.demo.level3.homework;

import com.example.demo.level3.LearnStream;
import com.example.demo.level3.pojo.People;
import org.junit.jupiter.api.Test;

import java.math.BigDecimal;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author WXH
 * @date 2020/11/11 18:41
 */
public class AnswerByWxh {

    /*
     * 思考题：
     * 请将list根据分数是否及格进行分组，并将分数从高到低排序，每个组保留前三名，获取他们的姓名+成绩的拼接，拼接符号为->
     * 注：不及格的人指score小于60，及格为true，不及格为false
     * 注2：打印的对象类型为 Map<Boolean, String>
     */
    /**
     * 请在 com.example.demo.level3.homework 下新建文件
     * 拷贝以下代码，进行答题
     */
    @Test
    public void answer() {
        List<People> list = LearnStream.getList();
        // TODO 请对list进行操作，获取answer
        Map<Boolean, String> answer = list.stream().collect(Collectors.groupingBy(
                people -> people.getScore().compareTo(new BigDecimal("60")) >= 0, Collectors.collectingAndThen(Collectors.toList(),
                        v -> v.stream().sorted(Comparator.comparing(People::getScore, Comparator.reverseOrder())).limit(3)
                                .map(n -> n.getName() + n.getScore()).collect(Collectors.joining("->")))));
        System.out.println(answer);

    }
}
